import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";
import { resolve } from "path";
import path from "path";
import Icons from "unplugin-icons/vite";
import IconsResolver from "unplugin-icons/resolver";

import { viteMockServe } from "vite-plugin-mock";
const pathSrc = path.resolve(__dirname, "src");
// https://vitejs.dev/config/
export default defineConfig({
  // base: "./",
  plugins: [
    vue(),
    viteMockServe({
      mockPath: "./src/mock",
      enable: true,
      logger: true, //是否在控制台显示请求日志
    }),
    // 自动导入 Element Plus 相关函数，如：ElMessage, ElMessageBox... (带样式)
    AutoImport({
      resolvers: [
        ElementPlusResolver(), // 自动导入图标组件
        IconsResolver({
          prefix: "Icon",
        }),
      ],
      // 使用 AutoImport 插件的 dts 配置项，指定生成的类型声明文件路径为 pathSrc 目录下的 auto-imports.d.ts。
      dts: path.resolve(pathSrc, "auto-imports.d.ts"),
    }),
    Components({
      resolvers: [
        // 自动导入 Element Plus 组件
        ElementPlusResolver(),
        // 自动注册图标组件
        IconsResolver({
          enabledCollections: ["ep"],
        }),
      ],
      dts: path.resolve(pathSrc, "components.d.ts"),
    }),
    Icons({
      autoInstall: true,
    }),
  ],
  resolve: {
    alias: {
      // "@": resolve(__dirname, "src")
      "@": pathSrc,
    },
  },
  build: {
    // minify: "terser", // terser 混淆代码,同于指定项目在打包时使用的代码压缩工具
    // rollupOptions: {
    //   /**
    //    * 输出文件配置: 输出文件名 和 输出目录,正斜杠 / 可以用来划分文件到子目录
    //    */
    //   output: {
    //     chunkFileNames: "assets/ts/[name]-[hash].ts", // 引入文件名的名称,
    //     entryFileNames: "assets/ts/[name]-[hash].ts", // 包的入口文件名称
    //     assetFileNames: "assets/[ext]/[name]-[hash].[ext]", // 资源文件像字体图片等
    //   },
    // },
    terserOptions: {
      compress: {
        drop_console: true, // 生产环境去除 console
        drop_debugger: true, // 生产环境去除 debugger
      },
    },
  },
  server: {
    host: "0.0.0.0", // 默认为localhost
    port: 7079, // 端口号
    proxy: {
      // 本地开发环境通过代理实现跨域，生产环境使用 nginx 转发
      api: {
        target: "http://192.168.2.9:7079/", // 后端服务实际地址
        changeOrigin: true,
        rewrite: (path) => path.replace(/^\/api/, ""),
      },
    },
  },
});
